package com.hlpedu.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpSession;

/*@Controller用于标记一个类，被标记的类被称为控制器类（Handler).
处理器将会扫描使用了该注解的类的方法。要让该注解生效需要开启注解扫描。
主要作用用来处理浏览器的访问请求，分发处理器会扫描该类下的方法，
根据请求的URL检测哪个方法使用@RequestMapping注解声明了该请求路径，
找到后才是真正的处理请求的处理器。
@RequestMapping注解可以用在类上或者方法上，用来配置一个请求的映射。
 **/
@Controller
public class IndexController {
    //通过ModelAndView对象实现重定向，页面在WEB-INF的里面
    //通过转发访问WEB-INF
    @RequestMapping("/showSuccess")
    public String showSuccess(){
        System.out.println("-------");
        return "success";
    }
    @RequestMapping("/showPage")
    public ModelAndView showPage(HttpSession session){
        //创建模型和视图对象
        ModelAndView view=new ModelAndView();
        //使用ModelAndView对象封装数据，类似于request。setAttribute()
        session.setAttribute("msg1","乾坤未定");
        session.setAttribute("msg2","你我皆是黑马,哈哈哈");
        //指定数据在那个页面显示
        //重定向时，需要保证所跳转的页面在WEB-INF的里面,直接访问页面资源是无法实现的，需要通过视图解析器实现跳转
        view.setViewName("redirect:/success1.jsp");
        //view.setViewName("/WEB-INF/pages/success.jsp");
        return view;
    }
    //通过ModelAndView对象实现重定向
    @RequestMapping("/showPages")
    public ModelAndView showPages(HttpSession session){
        //创建模型和视图对象
        ModelAndView view=new ModelAndView();
        //使用ModelAndView对象封装数据，类似于request。setAttribute()
        session.setAttribute("msg1","乾坤未定");
        session.setAttribute("msg2","你我皆是黑马,哈哈哈");
        //指定数据在那个页面显示
        //重定向时，需要保证所跳转的页面在WEB-INF的外面
        view.setViewName("redirect:/success1.jsp");
        //view.setViewName("/WEB-INF/pages/success.jsp");
        return view;
    }
    @RequestMapping("/showMessage")
    public ModelAndView showMessage(){
        //创建模型和视图对象
        ModelAndView view=new ModelAndView();
        //使用ModelAndView对象封装数据，类似于request。setAttribute()
        view.addObject("msg1","社会很单纯");
        view.addObject("msg2","复杂的是人");
        //指定数据在那个页面显示
        view.setViewName("success");
        //view.setViewName("/WEB-INF/pages/success.jsp");
        return view;
    }
    @RequestMapping("/quickStart")
    public String sayHello(){
        System.out.println("-------");
        return "success";
    }
    @RequestMapping(value = "/showMsg",
            produces = "text/plain;charset=UTF-8")
    @ResponseBody
       public String showMsg(){
        return "乾坤未定，你我皆是黑马。。。";
    }
}
